package cn.b.sky.form.model;

import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * 
 * <strong>Title : QueryFieldCondition.java<br></strong>
 * <strong>Package : cn.b.sky.form.model<br></strong>
 * <strong>Description : </strong>自定义查询条件<br> 
 * <strong>Create on : 2016年11月18日 下午4:08:14<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public class QueryFieldCondition {
  private String fieldName;//待查询的字段名
  
  private String businessField;//对应业务字段
  
  private String fieldLable;//待查询的字标签

  private String dataType;//数据类型

  private String operator; //表示操作符，其值可为“EQ”（等于），"IN"（多选），“CT”（包含），“BT”（介于），“SC”（最近。。。时间内），“ALL”（忽略该条件）

  private String fieldValue;//可选，表示所输入的值，单值搜索时使用, 例如："someValue"

  private String[] fieldValues;//可选，表示所输入的值，多值搜索时使用, 例如：["user1", "user2"]

  private String startValue;//可选，表示范围起始的值，范围搜索时使用, 例如：100

  private String endValue;//可选，表示范围结束的值，范围搜索时使用, 例如：200

  private String timeUnit;// 可选，表示时间单位，operator为“SC”时使用，其值可为“MINUTE”（分钟）、“HOUR”（小时）、“DAY”（天）
  
  private String[] userNames;//用户多选时，用来展示用户名
  
  private String fieldValuesStr;
   
  private List<BusinessFieldValue> businessFieldValueList;//静态枚举集合

  public QueryFieldCondition(){
    //do noting
  }
  
  public QueryFieldCondition(String fieldName,String businessField,String fieldLable,String dataType, String operator,String fieldValue,String[] fieldValues,String startValue,String endValue,String timeUnit){
    this.fieldName=fieldName;
    this.dataType=dataType;
    this.operator=operator;
    this.fieldValue=fieldValue;
    this.fieldValues=fieldValues;
    this.startValue=startValue;
    this.endValue=endValue;
    this.timeUnit=timeUnit;
    this.fieldLable=fieldLable;
    this.businessField=businessField;
  }
  public String getFieldName() {
    return fieldName;
  }

  public void setFieldName(String fieldName) {
    this.fieldName = fieldName;
  }

  public String getDataType() {
    return dataType;
  }

  public void setDataType(String dataType) {
    this.dataType = dataType;
  }

  public String getOperator() {
    return operator;
  }

  public void setOperator(String operator) {
    this.operator = operator;
  }

  public String getFieldValue() {
    return fieldValue;
  }

  public void setFieldValue(String fieldValue) {
    this.fieldValue = fieldValue;
  }

  public String[] getFieldValues() {
    return fieldValues;
  }

  public void setFieldValues(String[] fieldValues) {
    this.fieldValues = fieldValues;
  }

  public String getStartValue() {
    return startValue;
  }

  public void setStartValue(String startValue) {
    this.startValue = startValue;
  }

  public String getEndValue() {
    return endValue;
  }

  public void setEndValue(String endValue) {
    this.endValue = endValue;
  }

  public String getTimeUnit() {
    return timeUnit;
  }

  public void setTimeUnit(String timeUnit) {
    this.timeUnit = timeUnit;
  }

  public String getFieldLable() {
    return fieldLable;
  }

  public void setFieldLable(String fieldLable) {
    this.fieldLable = fieldLable;
  }

  public String[] getUserNames() {
    return userNames;
  }

  public void setUserNames(String[] userNames) {
    this.userNames = userNames;
  }

  public List<BusinessFieldValue> getBusinessFieldValueList() {
    return businessFieldValueList;
  }

  public void setBusinessFieldValueList(List<BusinessFieldValue> businessFieldValueList) {
    this.businessFieldValueList = businessFieldValueList;
  }

  public String getBusinessField() {
    return businessField;
  }

  public void setBusinessField(String businessField) {
    this.businessField = businessField;
  }

  public String getFieldValuesStr() {
    if(StringUtils.isBlank(fieldValuesStr)&&fieldValues!=null){
      return StringUtils.join(fieldValues,",");
    }else{
      return fieldValuesStr;
    }
  }

  public void setFieldValuesStr(String fieldValuesStr) {
    this.fieldValuesStr = fieldValuesStr;
    if(!StringUtils.isBlank(fieldValuesStr)&&fieldValues==null){
      fieldValues=fieldValuesStr.split(",");
    }
  }
  
  

}
